package com.io.node;

import org.junit.Test;

import java.io.*;

// 节点流和处理流学习
public class Flow {
    public static void main(String[] args) {
        System.out.println("节点流和处理流学习");
    }

    @Test
    public void node() throws IOException {
        /**
         * 使用BufferedReader读取文件内容
         * 1.创建缓冲对象 使用 File
         * 2.按行读取内容 循环读取内容
         * 3.关闭资源流
         */
        String filePath = "E:\\a.java";

        // 1.创建缓冲对象
        BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));

        // 读取
        String line; // 按行读取，效率高
        // 说明
        // 1.bufferedReader.readLine() 是按行读取文件 返回字符串
        // 2.当返回null时，表示文件读取完毕

        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        // 关闭资源流，只需要关闭 bufferedReader ，因为底层会自动的去关闭 节点流 FileReader
        bufferedReader.close();
        System.out.println("测试！");
    }

    @Test
    public void writerContent() throws IOException {
        // 使用 BufferedWriter 操作数据
        // 把 hello ，叶嘻嘻哈哈写入文件 bufferWriter.txt 中
        String filePath = "E:\\bufferWriter.txt";
        // 1.构建缓冲对象
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath,true));
        // 写入内容
        bufferedWriter.write("hello ，java world");
        // 换行写入数据
        bufferedWriter.newLine();
        bufferedWriter.write("换行了写入数据");
        //  关闭流外层，bufferedWriter 会自动关闭 FileWriter 底层资源流
        bufferedWriter.close();
        System.out.println("结束");
    }

    @Test
    public void createFile() throws IOException {
        // 读文件必须要存在，写的话不存在即自动会创建
        String filePath = "E:\\kk.txt";
        String fileRead = "E:\\xx.txt";

        FileOutputStream fileOutputStream = new FileOutputStream(filePath,true);
        fileOutputStream.write('H');
        fileOutputStream.close();

        // 读一个文件内容
        System.out.println("--- reader ---");

        FileInputStream fileInputStream = new FileInputStream(fileRead);
        int len = 0;
        while ((len = fileInputStream.read()) != -1) {
            System.out.println((char)len);
        }
    }
}
